﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

public class MapPlayer : MonoBehaviour {

    // 获取导航组件
    private NavMeshAgent _agent;
    // 获取LineRenderer组件
    public LineRenderer _line;

    private void Awake()
    {
        // 初始化导航组件
        _agent = GetComponent<NavMeshAgent>();
        //初始化LineRenderer
        InitLine();
    }
    private void Update()
    {
        // 玩家根据点击位置自动寻路
        if (Input.GetMouseButtonDown(0))
        {
            // 声明一个射线，记录鼠标从主相机点击屏幕的位置
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            // 声明一个RaycastHit结构体，存储碰撞信息
            RaycastHit hit;
            // 如果点击到碰撞体，且tag是Ground的话
            if (Physics.Raycast(ray, out hit))
            {
                if (hit.collider.tag == "Ground")
                    // 设置导航位置
                    _agent.destination = hit.point;
            }
        }
        // 更新 LineRenderer
        UpdateLineRenderer();
    }
    /// <summary>
    /// 初始化 LineRenderer
    /// </summary>
    private void InitLine()
    {
        // 初始化LineRender的起始颜色
        _line.startColor = Color.red;
        // 初始化LineRender的终点颜色
        _line.endColor = Color.blue;
        // 初始化LineRender的起始宽度
        _line.startWidth = 0.5f;
        // 初始化LineRender的终点宽度
        _line.endWidth = 0.1f;
        // 初始化LineRender的每端的顶点数
        _line.numCapVertices = 90;
        // 初始化LineRender的每关节点的定点数
        _line.numCornerVertices = 90;
        // 初始化LineRender的材质
        _line.material = new Material(Shader.Find("Sprites/Default"));
    }
    /// <summary>
    /// 更新 LineRenderer
    /// </summary>
    private void UpdateLineRenderer()
    {
        // 更新LineRender返回线中的顶点数 = 导航组件中的人物到目的地的长度
        _line.positionCount = _agent.path.corners.Length;
        // 根据返回的定点数来设置顶点的位置
        _line.SetPositions(_agent.path.corners);
    }
}
